package com.pocket.cloud.order.config;

import feign.Logger;
import feign.Retryer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author zhaozhile
 */
@Configuration
public class OpenFeignConfig {

    /**
     * 【cloud-openfeign-2】
     * <p> feign日志级别
     *      NONE：默认的，不显示任何日志； </br>
     *      BASIC：仅记录请求方法、URL、响应状态码及执行时间； </br>
     *      HEADERS：除了 BASIC 中定义的信息之外，还有请求和响应的头信息； </br>
     *      FULL：除了 HEADERS 中定义的信息之外，还有请求和响应的正文及元数据 </br>
     *
     * <p> Tips
     *      可通过文件配置： spring.cloud.openfeign.client.config.default.loggerLevel: full </br>
     *      Feign 最终的日志级别是 logging.level 和 spring.cloud.openfeign.client.config.default.loggerLevel 的配置共同决定的，取两者中级别最小的。 </br>
     *      如果要显示 Feign 日志，需同时将 feignClient 对应包的 logging.level 配置为 DEBUG。<a href="https://docs.spring.io/spring-cloud-openfeign/docs/current/reference/html/#feign-logging">参考</a></br>
     */
    @Bean
    Logger.Level feignLogLevel() {
        return Logger.Level.BASIC;
    }

    /**
     * 【cloud-openfeign-4】
     */
    @Bean
    public Retryer retryer()
    {
        // Feign默认配置：不走重试策略
        // return Retryer.NEVER_RETRY;
        // 最大请求次数为3(1+2)，初始间隔时间为100ms，重试间最大间隔时间为1s
        return new Retryer.Default(100,1,3);
    }
}
